Skip to content

fix: 修复设置页新增模型弹窗被层叠上下文遮挡 + 新增 desktop 一键 dev 脚本 - #36

Merged
LIUXIN557 merged 3 commits into
masterfrom
fix/settings-modal-stuck-and-dev-script
Sep 2, 2026
Merged

fix: 修复设置页新增模型弹窗被层叠上下文遮挡 + 新增 desktop 一键 dev 脚本#36
LIUXIN557 merged 3 commits into
masterfrom
fix/settings-modal-stuck-and-dev-script

Conversation

@LIUXIN557

Copy link
Copy Markdown
Collaborator

问题

在设置页点击「模型 → 新增模型」时,弹窗会被设置页面遮挡,表现为"卡住";点击返回时设置页面淡出,弹窗才短暂露出。

根因

SettingsPage 根元素使用了 transition-all duration-250 + translate-y-0/4translate-y 本质是 CSS transform,会创建新的层叠上下文(stacking context)。在桌面端 WebView 场景下,通过 portal 渲染到 body 的 Modal 未能正确叠加在 SettingsPage 之上,导致弹窗被不透明背景遮挡。

修复

1. SettingsPage 样式调整 (web/src/components/SettingsPage.jsx)

  • transition-alltransition-opacity(只过渡透明度,避免为所有属性创建合成层)
  • 去掉 translate-y-0/4(消除 transform 创建的层叠上下文)
  • 保留 opacity-100/0 淡入淡出动画

视觉变化:设置页打开/关闭从「淡入+上滑」变为「纯淡入」,更简洁。

2. 新增 desktop 一键 dev 脚本 (scripts/dev_desktop.py + scripts/dev_desktop.sh + scripts/dev_desktop.bat)

用途:只修改 web/H5 代码时,快速启动 desktop 开发环境验证,无需重新编译 C++。

功能:

  • 自动检测项目根目录
  • 智能构建 web(检测 web/src/ 是否有比 web/dist/index.html 更新的文件,有就自动 pnpm build
  • 自动定位 desktop 构建产物(优先选 desktop-release
  • 设置 ACECODE_DEV_WEB_DIR 环境变量,desktop 启动后从文件系统加载前端资源
  • 跨平台支持(macOS / Linux / Windows)

用法:

./scripts/dev_desktop.sh           # 自动构建(如需)并启动
./scripts/dev_desktop.sh --rebuild # 强制重新构建
./scripts/dev_desktop.sh --list    # 列出可用构建产物

验证

  • Python / Bash 语法检查通过
  • --help / --list 输出正常,正确识别 build/macos-x64-desktop-release/ACECode.app
  • 桌面端实际验证新增模型弹窗正常弹出(需在 desktop 中测试)

影响范围

  • 仅修改 SettingsPage 根元素的 CSS 过渡类名,不影响逻辑
  • 新增 3 个脚本文件,不影响现有构建流程
  • desktop dev 模式利用已有的 ACECODE_DEV_WEB_DIR 环境变量机制,无需 C++ 改动

5.1 点击打开:网页链接(http/https)经浏览器打开,本地文件链接走系统文件
管理器;恢复 open_tui_chat_file_link「只处理本地链接」契约,修复
ExternalLinkDoesNotCallLocalLauncher 回归。
5.2 OSC 8 透传:markdown 渲染注入 OSC 8 转义,新增 link_safety 模块做
URL 安全过滤。
5.3 悬停气泡:terminal_capability 探测 hover motion 支持,tui_state 新增
hover 字段,main.cpp 以 dbox 叠加无布局侵入气泡并调用
screen.EnableMouseHoverMotion。
新增 utils/open_url(is_openable_http_url / open_url_in_browser,默认不经
shell 启动器);ports/ftxui port-version 3→4(子模块源码变更需 bump 以刷新
vcpkg ABI hash);openspec 文档(design/proposal/tasks)同步更新。

注意:本提交冻结 external/ftxui gitlink 于 658c942c。src/main.cpp 调用了
未合并 hover 补丁(f98588b4, FTXUI PR #2)新增的 EnableMouseHoverMotion,
故分支需待 PR #2 合并并前移 gitlink 后方可独立编译。
- SettingsPage: 将 transition-all + translate-y 改为 transition-opacity + 纯 opacity,
  消除 transform 创建的层叠上下文,解决新增模型弹窗被设置页面遮挡的问题
- 新增 scripts/dev_desktop.py: 一键启动 desktop 开发环境,自动构建 web/dist 并
  设置 ACECODE_DEV_WEB_DIR 环境变量,改 H5 无需重编 C++
- 新增 scripts/dev_desktop.sh / .bat: 跨平台启动器
@LIUXIN557
LIUXIN557 merged commit 8823313 into master Sep 2, 2026
1 check failed
LIUXIN557 pushed a commit that referenced this pull request Sep 2, 2026
…HoverMotion)

master 经 #36 合入 0b97e49(TUI 超链接增强 5.1-5.3)后,src/main.cpp 调用了
ftxui::App::EnableMouseHoverMotion / EnableSynchronizedOutput 等新 API,但
external/ftxui 的 gitlink 仍停留在 658c942c——该版本 ftxui 无
EnableMouseHoverMotion 成员,导致 linux-x64 CI 在 Build CLI and test binary
步骤失败(error: class ftxui::App has no member named EnableMouseHoverMotion),
master 处于构建红态(Merge #36 run 33653685659 同一步失败,为 pre-existing)。

前移至 f98588b4(FTXUI PR #2 hover motion,已确认合入 shaohaozhi286/FTXUI
main,任意机器 clone 可及;与 #37 分支 ae67486 指向一致)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants